// Copyright Epic Games, Inc. All Rights Reserved.

#include "LyraDeveloperSettings.h"
#include "Misc/App.h"
#include "Widgets/Notifications/SNotificationList.h"
#include "Framework/Notifications/NotificationManager.h"

#include UE_INLINE_GENERATED_CPP_BY_NAME(LyraDeveloperSettings)

// 定义本地化文本命名空间
#define LOCTEXT_NAMESPACE "LyraCheats"

/**
 * 构造函数
 */
ULyraDeveloperSettings::ULyraDeveloperSettings()
{
}

/**
 * 获取设置分类名称
 * @return 分类名称，返回项目名称
 */
FName ULyraDeveloperSettings::GetCategoryName() const
{
	return FApp::GetProjectName();
}

#if WITH_EDITOR
/**
 * 属性更改后处理函数
 * @param PropertyChangedEvent 属性更改事件
 */
void ULyraDeveloperSettings::PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent)
{
	Super::PostEditChangeProperty(PropertyChangedEvent);

	// 应用设置
	ApplySettings();
}

/**
 * 配置重新加载后处理函数
 * @param PropertyThatWasLoaded 被加载的属性
 */
void ULyraDeveloperSettings::PostReloadConfig(FProperty* PropertyThatWasLoaded)
{
	Super::PostReloadConfig(PropertyThatWasLoaded);

	// 应用设置
	ApplySettings();
}

/**
 * 属性初始化后处理函数
 */
void ULyraDeveloperSettings::PostInitProperties()
{
	Super::PostInitProperties();

	// 应用设置
	ApplySettings();
}

/**
 * 应用设置（当前为空实现）
 */
void ULyraDeveloperSettings::ApplySettings()
{
}

/**
 * 当在编辑器中启动游戏时调用，显示体验覆盖激活的通知
 */
void ULyraDeveloperSettings::OnPlayInEditorStarted() const
{
	// 如果设置了体验覆盖，显示通知提醒用户
	if (ExperienceOverride.IsValid())
	{
		// 创建通知信息
		FNotificationInfo Info(FText::Format(
			LOCTEXT("ExperienceOverrideActive", "开发者设置覆盖\n体验 {0}"),
			FText::FromName(ExperienceOverride.PrimaryAssetName)
		));
		// 设置通知过期时间
		Info.ExpireDuration = 2.0f;
		// 添加通知
		FSlateNotificationManager::Get().AddNotification(Info);
	}
}
#endif

// 取消本地化文本命名空间定义
#undef LOCTEXT_NAMESPACE